home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / kcl.lha / ustation / extract.c next >
C/C++ Source or Header  |  1986-01-17  |  794b  |  57 lines

  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. char buffer[1024];
  5.  
  6. main()
  7. {
  8.     register c, i;
  9.  
  10. START:
  11.     c = getchar();
  12. START1:
  13.     if (feof(stdin))
  14.         goto EXIT;
  15.     if (isalpha(c) || c == '_')
  16.         goto IDENTIFIER;
  17.     if (c == '\'')
  18.         goto CHARACTER;
  19.     if (c == '"')
  20.         goto STRING;
  21.     if (c == '/') {
  22.         if ((c = getchar()) == '*')
  23.             goto COMMENT;
  24.         goto START1;
  25.     }
  26.     goto START;
  27.  
  28. IDENTIFIER:
  29.     for (i = 0;  isalnum(c) || c == '_';  c = getchar(), i++)
  30.         buffer[i] = c;
  31.     buffer[i] = '\0';
  32.     if (i < 7)
  33.         goto START1;
  34.     printf("%s\n", buffer);
  35.     goto START1;
  36.  
  37. CHARACTER:
  38.     while ((c = getchar()) != '\'')
  39.         if (c == '\\')
  40.             getchar();
  41.     goto START;
  42.  
  43. STRING:
  44.     while ((c = getchar()) != '"')
  45.         if (c == '\\')
  46.             getchar();
  47.     goto START;
  48.  
  49. COMMENT:
  50.     while (getchar() != '*' || getchar() != '/')
  51.         ;
  52.     goto START;
  53.  
  54. EXIT:
  55.     exit(0);
  56. }
  57.